// express里的中间件
/*
1.应用级中间件 2.内置中间件 3.第三方中间件 4.错误处理中间件 express里的中间件本质上就是函数。函数在express的内部会被执行，为了扩展express的功能的，类似插件
*/

// 一、应用级中间件：和应用有关的 app
// 使用中间件，app会提供一个 use方法
const express = require('express');
let app =  express();

// 中间件1
let middleWare1 = function(req,res,next){
    // next 转交中间件的权限到下一个中间件或者是应用
    req.money = 100;
    console.log(11111);
    next();
    console.log(1111+'end');
}

// 中间件2
let middleWare2 = function (req,res,next){
    req.money -= 10;
    // next 转交中间件的权限到下一个中间件或者是应用
    console.log(222);
    next();
    console.log(222+'end');
}

// 中间件3
let middleWare3 = function (req,res,next){
     // next 转交中间件的权限到下一个中间件或者是应用
    req.money -= 20;
    console.log(3333);
    next();
    console.log(3333+'end');
}

app.use(middleWare1);  // 把中间件 通过express的app执行；
app.use(middleWare2);
app.use(middleWare3);

app.get('/',(req,res)=>{
    res.send('执行完毕'+req.money);
})

app.listen(8080);

/*
1. 中间件是函数 通过use 执行
2. 通过next 转交权限到下一个中间件
3. 中间件内的req和res一样的。
4.中间件的执行顺序：遵循洋葱模型
*/ 

